4626596 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

おびやまロボット研究所 ~マイコン電子工作と自作ドローン~

おびやまロボット研究所 ~マイコン電子工作と自作ドローン~

Arduinoでマイクロマウス

Arduinoの開発環境でマイクロマウスを動かす教材を考え中.
基板の外形も以前作ったH8バージョンの寸法と同じで自作できるように片面で設計中.
Arduinoのピン数が少ないのでDIP-SWもLEDも減らし,OPAMPも無くしたのに,
なぜか片面で収めることがかなり厳しいです.H8バージョンは結構試行錯誤したから,
今度も同じ位時間がかかるかも...

Arduino-mouse.JPG

-追記-

片面,ジャンパー3本でなんとかできました.幅がちょっと厳しいところがありますが.
来週再確認して基板を自作して組み立ててみます.

arduino-micormouse-brd.JPG

---------------------------------------

基板作製

エッチング,穴あけまでは上手くできたのですが,友人にレジスト塗った方が良いって言われたの思い出して,初めて塗ってみました.
塗る前↓
CIMG1406.JPG

塗った後に電極部分を削ったもの↓
CIMG1407.JPG

グリーンレジストは普通の塗料と違ってなかなか綺麗に塗れません.
また,はがすのも結構大変です.カリカリと削る感じじゃなくて,薄くてやわらかい皮膜をそぎ落とす感じです.結構根気のいる作業でした.
穴あけは最後のほうがいいみたいです.でないと穴あけの際のバリが邪魔になってレジストをはがすのが結構大変になります.
ハンダがブリッジしない点はいいんでしょうが作業は大変.部品実装終わった後に保護皮膜として塗るのがいいかも.


---------------------------------------

昨日作った基板に部品を集めてはんだ付け.
CIMG1413.JPG

ボディに乗せてこんな感じになる予定.
CIMG1416.JPG

USB-シリアル変換を使って書き込みます.こんな感じで書き込み動作まで確認.
CIMG1419.JPG

USB-シリアル変換はスイッチサイエンスさんから購入したものです.
5V動作Arduino Pro/Pro Mini向け小型USB-シリアルアダプタ
http://www.switch-science.com/products/detail.php?product_id=342

---------------------------------------
ハード完成

Arduinoマイクロマウス,ハードが完成しました.
使ってるマイコンATmega328PにArduinoのブートローダーが乗ってますので,
Arduinoの開発環境が使用できます.

斜めから↓
CIMG1424.JPG

上から↓
CIMG1429.JPG

センサの値を読むには,シリアル通信でPCに値を表示させます.

CIMG1422.JPG

赤はリセット,
黄色いスイッチを使ってモード切替をして,
緑でスタート.
(信号機を意識した配色)
Arduinoマイクロマウス,右90度ターンの動画

後は,センサやステップ数やしきい値の調整をして,H8から移植したプログラムのバグ取りをしたら完成.


---------------------------------------

ソフトが完成しました.
最初は,原因不明の暴走が起こり,どうやら割込みを使ったモータの回転時の空ループなどでArduinoのコンパイラが勝手に最適化して動作不具合が生じてことが分かり,
delay(1)を空ループ内に入れたら以前のH8版とほとんど同じで動きました.
主な変更点は,
上記の通り,空ループにdelay(1)を追加,
初期設定をsetup()に移動,
main()内のループを,loop()に移動,
H8のTimerA割込みをMStimer2()に変更,
入出力をArduinoに合わせて書き換え,アナログ入力が簡単に書けました.

壁との距離の調整がもう少しですが,3×3迷路の探索と最短の動画をあげます.

Arduinoマイクロマウスの動画.

-追記-
以下のURLで書かれてることからも,Arduinoのコンパイラの最適化オプションを何とかしようとするより,delay(1)を入れることで問題解決したので,これでよしとします.
(ループの間何もしないのでインラインでNOPを入れようとか頑張りましたが上手くいきませんでした.)
http://d.hatena.ne.jp/studio_k/20100306/1267865563

- 追記2 -
検索したら既知の問題のようで,割込み内で使う変数をvolatileで定義しておけば良いことが分かりませいた.
volatileで定義しないして,delay(1)は消して,本当に完成!

---------------------------------------

広告↓

電脳Arduinoでちょっと未来を作る


Arduinoをはじめよう

サンハヤト【GR-S304】ハンダマスキング剤グリーンレジスト 290ml



© Rakuten Group, Inc.